package com.ms.teapuesto.service;

import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.ms.teapuesto.model.Equipo;
import com.ms.teapuesto.model.Evento;
import com.ms.teapuesto.model.Fecha;
import com.ms.teapuesto.util.ParametroSum;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

//import javax.annotation.Nullable;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;

/**
 * Created by RAZANERO on 2/09/14.
 */
@Component
public class AnalisisServiceImpl implements AnalisisService {

    private static final Logger LOG = LoggerFactory.getLogger(AnalisisServiceImpl.class);

    @Autowired
    LigaService ligaService;

    @Autowired
    EquipoService equipoService;

    @Autowired
    EventoService eventoService;

    @Autowired
    ApplicationContext applicationContext;

    @PostConstruct
    public void init() {


    }


    public void execute(Fecha fecha) {
        calcularIntern(fecha);
    }


    private void analisisVisitaTotal(final String nombre, Equipo equipo, List<Fecha> fechaList) {
        Collection<Fecha> visitaAllList = Collections2.filter(fechaList, new Predicate<Fecha>() {
            public boolean apply(Fecha fecha) {
                return nombre.equals(fecha.getEquipo2());
            }
        });

        int totalPartidosAll = visitaAllList.size();
        if (totalPartidosAll == 0) {
            LOG.error("Equipo sin partidos de visita " + equipo);
            return;
        }


        List<String> parametros = Arrays.asList("totalGL", "totalGV", "totalE", "totalGolScored1t",
                "totalGolConceded1t", "totalGolScored2t", "totalGolConceded2t",
                "g_1t", "e_1t", "p_1t", "g_2t", "e_2t", "p_2t", "ee", "el", "ev",
                "lv", "ll", "le", "ve", "vv",
                "vl", "+3");

        ParametroSum sum = new ParametroSum(parametros);

        LOG.info("Calculando parametros para " + nombre);
        calcularIntern(new ArrayList<Fecha>(visitaAllList), sum);

        equipo.setVisita_partidos(totalPartidosAll);
        equipo.setVisita_avg_scored(new BigDecimal((sum.get("totalGolConceded1t") + sum.get("totalGolConceded2t"))));
        equipo.setVisita_avg_conceded(new BigDecimal((sum.get("totalGolScored1t") + sum.get("totalGolScored2t"))));
        equipo.setVisita_avg_3(new BigDecimal((sum.get("+3"))).setScale(2, RoundingMode.HALF_UP));

        equipo.setVisita_avg_scored_1t(new BigDecimal(sum.get("totalGolConceded1t")));
        equipo.setVisita_avg_scored_2t(new BigDecimal(sum.get("totalGolConceded2t")));
        equipo.setVisita_avg_conceded_1t(new BigDecimal(sum.get("totalGolScored1t")));
        equipo.setVisita_avg_conceded_2t(new BigDecimal(sum.get("totalGolScored2t")));

        equipo.setVisita_g_1t(new BigDecimal(sum.get("p_1t")));
        equipo.setVisita_e_1t(new BigDecimal(sum.get("e_1t")));
        equipo.setVisita_p_1t(new BigDecimal(sum.get("g_1t")));

        equipo.setVisita_g_2t(new BigDecimal(sum.get("p_2t")));
        equipo.setVisita_e_2t(new BigDecimal(sum.get("e_2t")));
        equipo.setVisita_p_2t(new BigDecimal(sum.get("g_2t")));

        equipo.setVisita_ee(new BigDecimal(sum.get("ee")));
        equipo.setVisita_el(new BigDecimal(sum.get("el")));
        equipo.setVisita_ev(new BigDecimal(sum.get("ev")));
        equipo.setVisita_lv(new BigDecimal(sum.get("lv")));
        equipo.setVisita_ll(new BigDecimal(sum.get("ll")));
        equipo.setVisita_le(new BigDecimal(sum.get("le")));
        equipo.setVisita_ve(new BigDecimal(sum.get("ve")));
        equipo.setVisita_vv(new BigDecimal(sum.get("vv")));
        equipo.setVisita_vl(new BigDecimal(sum.get("vl")));

    }

    private void analisisLocalTotal(final String nombre, Equipo equipo, List<Fecha> fechaList) {
        Collection<Fecha> localAllList = Collections2.filter(fechaList, new Predicate<Fecha>() {
            public boolean apply(Fecha fecha) {
                return nombre.equals(fecha.getEquipo1());
            }
        });

        int totalPartidosAll = localAllList.size();
        if (totalPartidosAll == 0) {
            LOG.error("Equipo sin partidos de local " + equipo);
            return;
        }

        List<String> parametros = Arrays.asList("totalGL", "totalGV", "totalE", "totalGolScored1t",
                "totalGolConceded1t", "totalGolScored2t", "totalGolConceded2t",
                "g_1t", "e_1t", "p_1t", "g_2t", "e_2t", "p_2t", "ee", "el", "ev",
                "lv", "ll", "le", "ve", "vv",
                "vl", "+3");
        ParametroSum sum = new ParametroSum(parametros);
        LOG.info("Calculando parametros para " + nombre);
        calcularIntern(new ArrayList<Fecha>(localAllList), sum);
        equipo.setLocal_partidos(totalPartidosAll);
        equipo.setLocal_avg_scored(new BigDecimal((sum.get("totalGolScored1t") + sum.get("totalGolScored2t"))));
        equipo.setLocal_avg_conceded(new BigDecimal((sum.get("totalGolConceded1t") + sum.get("totalGolConceded2t"))));
        equipo.setLocal_avg_3(new BigDecimal((sum.get("+3"))).setScale(2, RoundingMode.HALF_UP));

        equipo.setLocal_avg_scored_1t(new BigDecimal(sum.get("totalGolScored1t")));
        equipo.setLocal_avg_scored_2t(new BigDecimal(sum.get("totalGolScored2t")));
        equipo.setLocal_avg_conceded_1t(new BigDecimal(sum.get("totalGolConceded1t")));
        equipo.setLocal_avg_conceded_2t(new BigDecimal(sum.get("totalGolConceded2t")));

        equipo.setLocal_g_1t(new BigDecimal(sum.get("g_1t")));
        equipo.setLocal_e_1t(new BigDecimal(sum.get("e_1t")));
        equipo.setLocal_p_1t(new BigDecimal(sum.get("p_1t")));

        equipo.setLocal_g_2t(new BigDecimal(sum.get("g_2t")));
        equipo.setLocal_e_2t(new BigDecimal(sum.get("e_2t")));
        equipo.setLocal_p_2t(new BigDecimal(sum.get("p_2t")));

        equipo.setLocal_ee(new BigDecimal(sum.get("ee")));
        equipo.setLocal_el(new BigDecimal(sum.get("el")));
        equipo.setLocal_ev(new BigDecimal(sum.get("ev")));
        equipo.setLocal_lv(new BigDecimal(sum.get("lv")));
        equipo.setLocal_ll(new BigDecimal(sum.get("ll")));
        equipo.setLocal_le(new BigDecimal(sum.get("le")));
        equipo.setLocal_ve(new BigDecimal(sum.get("ve")));
        equipo.setLocal_vv(new BigDecimal(sum.get("vv")));
        equipo.setLocal_vl(new BigDecimal(sum.get("vl")));
    }

    @Transactional
    public void execute(String nombre, Equipo equipo, List<Fecha> fechaList) {

        analisisLocal(nombre, equipo, fechaList);
        analisisVisita(nombre, equipo, fechaList);

        analisisLocalTotal(nombre, equipo, fechaList);
        analisisVisitaTotal(nombre, equipo, fechaList);

    }

    @Transactional
    public void executeResultado(List<String> nombreList, Equipo equipo, List<Evento> fechaList) {

        analisisResultadoLocal(nombreList, equipo, fechaList);
        analisisResultadoVisita(nombreList, equipo, fechaList);

        analisisResultadoTotal(nombreList, equipo, fechaList);

    }

    /**
     * private BigDecimal local_g;
     * private BigDecimal local_g_p;
     * private BigDecimal local_avg_conceded;
     * private BigDecimal local_avg_scored;
     * private BigDecimal local_avg_scored_1t;
     * private BigDecimal local_avg_scored_2t;
     */
    private void analisisLocal(final String nombre, final Equipo equipo, List<Fecha> fechaList) {
        Collection<Fecha> localAllList = Collections2.filter(fechaList, new Predicate<Fecha>() {
            public boolean apply(Fecha fecha) {
                return nombre.equals(fecha.getEquipo1());
            }
        });
        List<Fecha> localList = new ArrayList<Fecha>();


        int i = 1;
        for (Fecha fecha : localAllList) {
            if (i <= 4) {
                localList.add(fecha);
            }
            i++;
        }

        int totalPartidos = localList.size();

        if (totalPartidos == 0) {
            LOG.error("Equipo sin partidos de local " + equipo);
            return;
        }

        int totalG = 0;
        List<String> parametros = Arrays.asList("totalGL", "totalGV", "totalE", "totalGolScored1t",
                "totalGolConceded1t", "totalGolScored2t", "totalGolConceded2t",
                "g_1t", "e_1t", "p_1t",  "g_2t", "e_2t", "p_2t", "ee", "el", "ev",
                "lv", "ll", "le", "ve", "vv",
                "vl", "+3");
        LOG.info("Calculando parametros para " + nombre);
        ParametroSum sum = new ParametroSum(parametros);
        calcularIntern(localList, sum);


        equipo.setLocal_partidos_ult(totalPartidos);
        equipo.setLocal_avg_scored_ult(new BigDecimal((sum.get("totalGolScored1t") + sum.get("totalGolScored2t"))));
        equipo.setLocal_avg_conceded_ult(new BigDecimal((sum.get("totalGolConceded1t") + sum.get("totalGolConceded2t"))));
        equipo.setLocal_avg_3_ult(new BigDecimal(sum.get("+3")).setScale(2, RoundingMode.HALF_UP));
        equipo.setLocal_avg_scored_1t_ult(new BigDecimal(sum.get("totalGolScored1t")));
        equipo.setLocal_avg_scored_2t_ult(new BigDecimal(sum.get("totalGolScored2t")));
        equipo.setLocal_avg_conceded_1t_ult(new BigDecimal(sum.get("totalGolConceded1t")));
        equipo.setLocal_avg_conceded_2t_ult(new BigDecimal(sum.get("totalGolConceded2t")));

        equipo.setLocal_g_ult(new BigDecimal(sum.get("totalGL")));
        equipo.setLocal_e_ult(new BigDecimal(sum.get("totalE")));
        equipo.setLocal_p_ult(new BigDecimal(sum.get("totalGV")));

        equipo.setLocal_g_1t_ult(new BigDecimal(sum.get("g_1t")));
        equipo.setLocal_e_1t_ult(new BigDecimal(sum.get("e_1t")));
        equipo.setLocal_p_1t_ult(new BigDecimal(sum.get("p_1t")));

        equipo.setLocal_g_2t_ult(new BigDecimal(sum.get("g_2t")));
        equipo.setLocal_e_2t_ult(new BigDecimal(sum.get("e_2t")));
        equipo.setLocal_p_2t_ult(new BigDecimal(sum.get("p_2t")));


    }


    private void analisisResultadoLocal(final List<String> nombre, final Equipo equipo, List<Evento> fechaList) {
        Collection<Evento> localAllList = Collections2.filter(fechaList, new Predicate<Evento>() {
            public boolean apply(Evento fecha) {
                return nombre.contains(fecha.getEquipo1());
            }
        });
        List<Evento> localList = new ArrayList<Evento>();


        int i = 1;
        for (Evento fecha : localAllList) {
            if (i <= 4) {
                localList.add(fecha);
            }
            i++;
        }

        int totalPartidos = localList.size();

        if (totalPartidos == 0) {
            LOG.error("Equipo sin partidos de local " + equipo);
            return;
        }

        int totalAnalizadoSimple=0;
        int totalAnalizadoDoble=0;
        int totalAcertadoSimple=0;
        int totalAcertadoDoble=0;
        for (Evento evento : localList) {
            if(StringUtils.isNotBlank(evento.getResultSimple()) && StringUtils.isNotBlank(evento.getResultFinalSimple())){
                totalAnalizadoSimple++;
                if(evento.getResultSimple().equals(evento.getResultFinalSimple())){
                    totalAcertadoSimple++;
                }
            }
            if(StringUtils.isNotBlank(evento.getResultDoble()) && StringUtils.isNotBlank(evento.getResultFinalDouble())){
                totalAnalizadoDoble++;
                if(evento.getResultDoble().equals(evento.getResultFinalDouble())){
                    totalAcertadoDoble++;
                }
            }
        }

        equipo.setLocal_analizado_simple(new BigDecimal(totalAnalizadoSimple));
        equipo.setLocal_analizado_doble(new BigDecimal(totalAnalizadoDoble));
        equipo.setLocal_acertado_simple(new BigDecimal(totalAcertadoSimple));
        equipo.setLocal_acertado_doble(new BigDecimal(totalAcertadoDoble));
    }

    private void analisisResultadoTotal(final List<String> nombre, final Equipo equipo, List<Evento> fechaList) {
        Collection<Evento> localAllList = Collections2.filter(fechaList, new Predicate<Evento>() {
            public boolean apply(Evento fecha) {
                return nombre.contains(fecha.getEquipo1()) || nombre.contains(fecha.getEquipo2()) ;
            }
        });



        int totalPartidos = localAllList.size();

        if (totalPartidos == 0) {
            LOG.error("Equipo sin partidos de local " + equipo);
            return;
        }

        int totalAnalizadoSimple=0;
        int totalAnalizadoDoble=0;
        int totalAcertadoSimple=0;
        int totalAcertadoDoble=0;
        for (Evento evento : localAllList) {
            if(StringUtils.isNotBlank(evento.getResultSimple()) && StringUtils.isNotBlank(evento.getResultFinalSimple())){
                totalAnalizadoSimple++;
                if(evento.getResultSimple().equals(evento.getResultFinalSimple())){
                    totalAcertadoSimple++;
                }
            }
            if(StringUtils.isNotBlank(evento.getResultDoble()) && StringUtils.isNotBlank(evento.getResultFinalDouble())){
                totalAnalizadoDoble++;
                if(evento.getResultDoble().equals(evento.getResultFinalDouble())){
                    totalAcertadoDoble++;
                }
            }
        }

        equipo.setTotal_analizado_simple(new BigDecimal(totalAnalizadoSimple));
        equipo.setTotal_analizado_doble(new BigDecimal(totalAnalizadoDoble));
        equipo.setTotal_acertado_simple(new BigDecimal(totalAcertadoSimple));
        equipo.setTotal_acertado_doble(new BigDecimal(totalAcertadoDoble));
    }

    private void analisisResultadoVisita(final List<String> nombre, final Equipo equipo, List<Evento> fechaList) {
        Collection<Evento> localAllList = Collections2.filter(fechaList, new Predicate<Evento>() {
            public boolean apply(Evento fecha) {
                return nombre.contains(fecha.getEquipo2());
            }
        });
        List<Evento> localList = new ArrayList<Evento>();


        int i = 1;
        for (Evento fecha : localAllList) {
            if (i <= 4) {
                localList.add(fecha);
            }
            i++;
        }

        int totalPartidos = localList.size();

        if (totalPartidos == 0) {
            LOG.error("Equipo sin partidos de local " + equipo);
            return;
        }

        int totalAnalizadoSimple=0;
        int totalAnalizadoDoble=0;
        int totalAcertadoSimple=0;
        int totalAcertadoDoble=0;
        for (Evento evento : localList) {
            if(StringUtils.isNotBlank(evento.getResultSimple()) && StringUtils.isNotBlank(evento.getResultFinalSimple())){
                totalAnalizadoSimple++;
                if(evento.getResultSimple().equals(evento.getResultFinalSimple())){
                    totalAcertadoSimple++;
                }
            }
            if(StringUtils.isNotBlank(evento.getResultDoble()) && StringUtils.isNotBlank(evento.getResultFinalDouble())){
                totalAnalizadoDoble++;
                if(evento.getResultDoble().equals(evento.getResultFinalDouble())){
                    totalAcertadoDoble++;
                }
            }
        }

        equipo.setVisita_analizado_simple(new BigDecimal(totalAnalizadoSimple));
        equipo.setVisita_analizado_doble(new BigDecimal(totalAnalizadoDoble));
        equipo.setVisita_acertado_simple(new BigDecimal(totalAcertadoSimple));
        equipo.setVisita_acertado_doble(new BigDecimal(totalAcertadoDoble));
    }

    private void analisisResultadoVisitaTotal(final List<String> nombre, final Equipo equipo, List<Evento> fechaList) {
        Collection<Evento> localAllList = Collections2.filter(fechaList, new Predicate<Evento>() {
            public boolean apply(Evento fecha) {
                return nombre.contains(fecha.getEquipo2());
            }
        });

        int totalPartidos = localAllList.size();

        if (totalPartidos == 0) {
            LOG.error("Equipo sin partidos de local " + equipo);
            return;
        }

        int totalAnalizadoSimple=0;
        int totalAnalizadoDoble=0;
        int totalAcertadoSimple=0;
        int totalAcertadoDoble=0;
        for (Evento evento : localAllList) {
            if(StringUtils.isNotBlank(evento.getResultSimple()) && StringUtils.isNotBlank(evento.getResultFinalSimple())){
                totalAnalizadoSimple++;
                if(evento.getResultSimple().equals(evento.getResultFinalSimple())){
                    totalAcertadoSimple++;
                }
            }
            if(StringUtils.isNotBlank(evento.getResultDoble()) && StringUtils.isNotBlank(evento.getResultFinalDouble())){
                totalAnalizadoDoble++;
                if(evento.getResultDoble().equals(evento.getResultFinalDouble())){
                    totalAcertadoDoble++;
                }
            }
        }

        equipo.setVisita_analizado_simple(new BigDecimal(totalAnalizadoSimple));
        equipo.setVisita_analizado_doble(new BigDecimal(totalAnalizadoDoble));
        equipo.setVisita_acertado_simple(new BigDecimal(totalAcertadoSimple));
        equipo.setVisita_acertado_doble(new BigDecimal(totalAcertadoDoble));
    }

    private void analisisVisita(final String nombre, final Equipo equipo, List<Fecha> fechaList) {
        Collection<Fecha> visitaAllList = Collections2.filter(fechaList, new Predicate<Fecha>() {
            public boolean apply(Fecha fecha) {
                return nombre.equals(fecha.getEquipo2());
            }
        });
        List<Fecha> visitaList = new ArrayList<Fecha>();

        int i = 1;
        for (Fecha fecha : visitaAllList) {
            if (i <= 4) {
                visitaList.add(fecha);
            }
            i++;
        }

        int totalPartidos = visitaList.size();
        if (totalPartidos == 0) {
            LOG.error("Equipo sin partidos de visita " + equipo);
            return;
        }

        int totalG = 0;
        List<String> parametros = Arrays.asList(
                "totalGV", "totalE", "totalGL", "totalGolScored1t",
                "totalGolConceded1t", "totalGolScored2t", "totalGolConceded2t",
                "g_1t", "e_1t", "p_1t","g_2t", "e_2t", "p_2t", "ee", "el", "ev",
                "lv", "ll", "le", "ve", "vv",
                "vl", "+3");
        ParametroSum sum = new ParametroSum(parametros);
        LOG.info("Analizando parametros " + nombre);
        calcularIntern(visitaList, sum);

        equipo.setVisita_partidos_ult(totalPartidos);
        equipo.setVisita_avg_conceded_ult(new BigDecimal((sum.get("totalGolScored1t") + sum.get("totalGolScored2t"))));
        equipo.setVisita_avg_scored_ult(new BigDecimal((sum.get("totalGolConceded1t") + sum.get("totalGolConceded2t"))));
        equipo.setVisita_avg_3_ult(new BigDecimal(sum.get("+3")).setScale(2, RoundingMode.HALF_UP));
        equipo.setVisita_avg_scored_2t_ult(new BigDecimal(sum.get("totalGolConceded2t")));
        equipo.setVisita_avg_scored_1t_ult(new BigDecimal(sum.get("totalGolConceded1t")));
        equipo.setVisita_avg_conceded_2t_ult(new BigDecimal(sum.get("totalGolScored2t")));
        equipo.setVisita_avg_conceded_1t_ult(new BigDecimal(sum.get("totalGolScored1t")));

        equipo.setVisita_g_ult(new BigDecimal(sum.get("totalGV")));
        equipo.setVisita_e_ult(new BigDecimal(sum.get("totalE")));
        equipo.setVisita_p_ult(new BigDecimal(sum.get("totalGL")));

        equipo.setVisita_g_1t_ult(new BigDecimal(sum.get("p_1t")));
        equipo.setVisita_e_1t_ult(new BigDecimal(sum.get("e_1t")));
        equipo.setVisita_p_1t_ult(new BigDecimal(sum.get("g_1t")));

        equipo.setVisita_g_2t_ult(new BigDecimal(sum.get("p_2t")));
        equipo.setVisita_e_2t_ult(new BigDecimal(sum.get("e_2t")));
        equipo.setVisita_p_2t_ult(new BigDecimal(sum.get("g_2t")));



    }

    private void calcularIntern(Fecha fecha) {
        LOG.info(fecha.toString());
        double ptscored = new Double(StringUtils.split(fecha.getPrimerTiempo(), "-")[0].trim());
        double ptconceded = new Double(StringUtils.split(fecha.getPrimerTiempo(), "-")[1].trim());

        double rfscored = new Double(StringUtils.split(fecha.getResultadoFinal(), "-")[0].trim());
        double rfconceded = new Double(StringUtils.split(fecha.getResultadoFinal(), "-")[1].trim());

        String result = "";
        if (ptscored > ptconceded) {
            result = "L";
        }
        if (ptscored == ptconceded) {
            result = "E";
        }
        if (ptscored < ptconceded) {
            result = "V";
        }


        if (rfscored > rfconceded) {
            result += "/L";
        }
        if (rfscored == rfconceded) {
            result += "/E";
        }
        if (rfscored < rfconceded) {
            result += "/V";
        }

        if ("L/V".equals(result)) {
            fecha.setRemontada("1");
        } else if ("V/L".equals(result)) {
            fecha.setRemontada("1");
        } else {
            fecha.setRemontada("0");
        }
        fecha.setResultadoDoble(result);
        fecha.setResultadoSimple(result.substring(2, 3));
        fecha.setTotalGoles(new BigDecimal(rfscored + rfconceded));
    }

    private void calcularIntern(List<Fecha> fechaList, ParametroSum sum) {
        int avg3 = 0;

        for (Fecha fecha : fechaList) {

            double ptscored = new Double(StringUtils.split(fecha.getPrimerTiempo(), "-")[0].trim());
            double ptconceded = new Double(StringUtils.split(fecha.getPrimerTiempo(), "-")[1].trim());

            double stscored = new Double(StringUtils.split(fecha.getResultadoFinal(), "-")[0].trim()) - new Double(StringUtils.split(fecha.getPrimerTiempo(), "-")[0].trim());
            double stconceded = new Double(StringUtils.split(fecha.getResultadoFinal(), "-")[1].trim()) - new Double(StringUtils.split(fecha.getPrimerTiempo(), "-")[1].trim());

            double rfscored = new Double(StringUtils.split(fecha.getResultadoFinal(), "-")[0].trim());
            double rfconceded = new Double(StringUtils.split(fecha.getResultadoFinal(), "-")[1].trim());

            if (rfconceded + rfscored >= 3) {
                avg3++;
            }


            String result = "";
            if (ptscored > ptconceded) {
                sum.add("g_1t");
                result = "L";
            }
            if (ptscored == ptconceded) {
                sum.add("e_1t");
                result = "E";
            }
            if (ptscored < ptconceded) {
                sum.add("p_1t");
                result = "V";
            }

            if (stscored > stconceded) {
                sum.add("g_2t");
            }
            if (stscored == stconceded) {
                sum.add("e_2t");
            }
            if (stscored < stconceded) {
                sum.add("p_2t");
            }


            if (rfscored > rfconceded) {
                result += "/L";
                sum.add("totalGL");
            }
            if (rfscored == rfconceded) {
                result += "/E";
                sum.add("totalE");
            }
            if (rfscored < rfconceded) {
                result += "/V";
                sum.add("totalGV");
            }

            sum.add("totalGolScored1t", ptscored);
            sum.add("totalGolConceded1t", ptconceded);
            sum.add("totalGolScored2t", stscored);
            sum.add("totalGolConceded2t", stconceded);

            if ("L/L".equals(result)) {
                sum.add("ll");
            } else if ("L/E".equals(result)) {
                sum.add("le");
            } else if ("L/V".equals(result)) {
                sum.add("lv");
            } else if ("E/E".equals(result)) {
                sum.add("ee");
            } else if ("E/L".equals(result)) {
                sum.add("el");
            } else if ("E/V".equals(result)) {
                sum.add("ev");
            } else if ("V/V".equals(result)) {
                sum.add("vv");
            } else if ("V/E".equals(result)) {
                sum.add("ve");
            } else if ("V/L".equals(result)) {
                sum.add("vl");
            } else {
                throw new RuntimeException("error " + result);
            }
        }
        LOG.info("Fechas " + fechaList.size() + " con " + avg3 + " partidos +3 = " + (avg3 * 1.0 / fechaList.size()));
        sum.add("+3", avg3 * 1.0 / fechaList.size());

    }


    public static void main(String[] args) {
        String result = "V/L";

        System.out.println(result.substring(2, 3));

    }
}
